<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

  <script>
    // 找到所有数组中消失的数字
    // 找到所有在 [1, n] 范围之间没有出现在数组中的数字。
    // 输入:
    // [4,3,2,7,8,2,3,1]
    // 输出:
    // [5,6]

    let arr = [4, 3, 2, 7, 8, 2, 3, 1]
    //第一步：对数组排序
    arr.sort(function (a, b) {
      return a - b;
    })
    // console.log(arr);
    let min = arr[0];
    let max = arr[arr.length - 1];
    let newArr = []
    for (var i = min; i <= max; i++) {
      newArr.push(i)
    }
    console.log(newArr); //拿到1-8的数组 
    //第二步：拿newArr来查询arr中元素，若是arr在完整的数组之中查询不到，就返回这个没有查询到的元素
    let res = newArr.filter(function (items, i) {
      return (arr.indexOf(items) === -1)
    })
    console.log(res);


    // //第一步，定义一个新的数组
    // let arr = [4, 3, 2, 7, 8, 2, 3, 1]
    // //第二步：先对数组排序
    // arr.sort(function (a, b) {
    //   return a - b;
    // })
    // //第三步：对数组进行去重
    // let arr2 = []
    // for (var i = 0; i < arr.length; i++) {
    //   if (arr[i] !== arr[i + 1]) {
    //     arr2.push(arr[i])
    //   }
    // }
    // // console.log(arr2);

    // let min = arr2[0]
    // let max = arr2[arr2.length - 1]
    // let arr3 = []
    // for (var i = min; i <= max; i++) {
    //   arr3.push(i)
    // }
    // // console.log(arr3); //得到1-8的数组
    // let newArr = []
    // for (var i = 0; i < arr2.length; i++) {
    //   for (var j = 0; j < arr3.length; j++) {
    //     if (arr2.indexOf(arr3[j]) === -1) {
    //       newArr.push(arr3[j])
    //     }
    //   }
    // }

    // // console.log(newArr);
    // //对数组进行去重
    // var newArr2 = []
    // newArr.sort((a, b) => {
    //   return a - b
    // })
    // for (var i = 0; i < newArr.length; i++) {
    //   if (newArr[i] !== newArr[i + 1]) {
    //     newArr2.push(newArr[i])
    //   }
    // }
    // console.log(newArr2);
  </script>
</body>

</html>